home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / drivers / thepit.c < prev    next >
C/C++ Source or Header  |  2000-04-04  |  34KB  |  871 lines

  1. /***************************************************************************
  2.  
  3. The Pit/Round Up/Intrepid/Super Mouse memory map (preliminary)
  4.  
  5. Driver by Zsolt Vasvari
  6.  
  7. Main CPU:
  8.  
  9. 0000-4fff ROM
  10. 8000-87ff RAM
  11. 8800-8bff Color RAM        (Not used in Intrepid/Super Mouse)
  12. 8c00-8fff Mirror for above (Not used in Intrepid/Super Mouse)
  13. 9000-93ff Video RAM
  14. 9400-97ff Mirror for above (Color RAM in Intrepid/Super Mouse)
  15. 9800-983f Attributes RAM
  16. 9840-985f Sprite RAM
  17.  
  18. Read:
  19.  
  20. a000      Input Port 0
  21. a800      Input Port 1
  22. b000      DIP Switches
  23. b800      Watchdog Reset
  24.  
  25. Write:
  26.  
  27. b000      NMI Enable
  28. b002      Coin Lockout
  29. b003      Sound Enable
  30. b005      Intrepid graphics bank select
  31. b006      Flip Screen X
  32. b007      Flip Screen Y
  33. b800      Sound Command
  34.  
  35.  
  36. Sound CPU:
  37.  
  38. 0000-0fff ROM  (0000-07ff in The Pit)
  39. 3800-3bff RAM
  40.  
  41.  
  42. Port I/O Read:
  43.  
  44. 8f  AY8910 Read Port
  45.  
  46.  
  47. Port I/O Write:
  48.  
  49. 00  Reset Sound Command
  50. 8c  AY8910 #2 Control Port    (Intrepid/Super Mouse only)
  51. 8d  AY8910 #2 Write Port      (Intrepid/Super Mouse only)
  52. 8e  AY8910 #1 Control Port
  53. 8f  AY8910 #1 Write Port
  54.  
  55.  
  56. ***************************************************************************/
  57.  
  58. #include "driver.h"
  59. #include "vidhrdw/generic.h"
  60.  
  61. extern unsigned char *galaxian_attributesram;
  62. extern unsigned char *intrepid_sprite_bank_select;
  63. WRITE_HANDLER( galaxian_attributes_w );
  64.  
  65. void thepit_vh_convert_color_prom(unsigned char *palette, unsigned short *colortable,const unsigned char *color_prom);
  66. void thepit_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh);
  67. WRITE_HANDLER( thepit_flipx_w );
  68. WRITE_HANDLER( thepit_flipy_w );
  69. READ_HANDLER( thepit_input_port_0_r );
  70. WRITE_HANDLER( thepit_sound_enable_w );
  71. WRITE_HANDLER( thepit_AY8910_0_w );
  72. WRITE_HANDLER( thepit_AY8910_1_w );
  73. WRITE_HANDLER( intrepid_graphics_bank_select_w );
  74.  
  75.  
  76. static struct MemoryReadAddress thepit_readmem[] =
  77. {
  78.     { 0x0000, 0x4fff, MRA_ROM },
  79.     { 0x8000, 0x87ff, MRA_RAM },
  80.     { 0x8800, 0x93ff, MRA_RAM },
  81.     { 0x9400, 0x97ff, videoram_r },
  82.     { 0x9800, 0x98ff, MRA_RAM },
  83.     { 0xa000, 0xa000, thepit_input_port_0_r },
  84.     { 0xa800, 0xa800, input_port_1_r },
  85.     { 0xb000, 0xb000, input_port_2_r },
  86.     { 0xb800, 0xb800, watchdog_reset_r },
  87.     { -1 }  /* end of table */
  88. };
  89.  
  90. static struct MemoryWriteAddress thepit_writemem[] =
  91. {
  92.     { 0x0000, 0x4fff, MWA_ROM },
  93.     { 0x8000, 0x87ff, MWA_RAM },
  94.     { 0x8800, 0x8bff, colorram_w, &colorram },
  95.     { 0x8c00, 0x8fff, colorram_w },
  96.     { 0x9000, 0x93ff, videoram_w, &videoram, &videoram_size },
  97.     { 0x9400, 0x97ff, videoram_w },
  98.     { 0x9800, 0x983f, galaxian_attributes_w, &galaxian_attributesram },
  99.     { 0x9840, 0x985f, MWA_RAM, &spriteram, &spriteram_size },
  100.     { 0x9860, 0x98ff, MWA_RAM }, // Probably unused
  101.     { 0xa000, 0xa000, MWA_NOP }, // Not hooked up according to the schematics
  102.     { 0xb000, 0xb000, interrupt_enable_w },
  103.     { 0xb001, 0xb001, MWA_NOP }, // Unused, but initialized
  104.     { 0xb002, 0xb002, MWA_NOP }, // coin_lockout_w
  105.     { 0xb003, 0xb003, thepit_sound_enable_w },
  106.     { 0xb004, 0xb005, MWA_NOP }, // Unused, but initialized
  107.     { 0xb006, 0xb006, thepit_flipx_w, &flip_screen_x },
  108.     { 0xb007, 0xb007, thepit_flipy_w, &flip_screen_y },
  109.     { 0xb800, 0xb800, soundlatch_w },
  110.     { -1 }  /* end of table */
  111. };
  112.  
  113.  
  114. static struct MemoryReadAddress intrepid_readmem[] =
  115. {
  116.     { 0x0000, 0x4fff, MRA_ROM },
  117.     { 0x8000, 0x87ff, MRA_RAM },
  118.     { 0x9000, 0x98ff, MRA_RAM },
  119.     { 0xa000, 0xa000, thepit_input_port_0_r },
  120.     { 0xa800, 0xa800, input_port_1_r },
  121.     { 0xb000, 0xb000, input_port_2_r },
  122.     { 0xb800, 0xb800, watchdog_reset_r },
  123.     { -1 }  /* end of table */
  124. };
  125.  
  126. static struct MemoryWriteAddress intrepid_writemem[] =
  127. {
  128.     { 0x0000, 0x4fff, MWA_ROM },
  129.     { 0x8000, 0x87ff, MWA_RAM },
  130.     { 0x9000, 0x93ff, videoram_w, &videoram, &videoram_size },
  131.     { 0x9400, 0x97ff, colorram_w, &colorram },
  132.     { 0x9800, 0x983f, galaxian_attributes_w, &galaxian_attributesram },
  133.     { 0x9840, 0x985f, MWA_RAM, &spriteram, &spriteram_size },
  134.     { 0x9860, 0x98ff, MWA_RAM }, // Probably unused
  135.     { 0xb000, 0xb000, interrupt_enable_w },
  136.     { 0xb001, 0xb001, MWA_NOP }, // Unused, but initialized
  137.     { 0xb002, 0xb002, MWA_NOP }, // coin_lockout_w
  138.     { 0xb003, 0xb003, thepit_sound_enable_w },
  139.     { 0xb004, 0xb004, MWA_NOP }, // Unused, but initialized
  140.     { 0xb005, 0xb005, intrepid_graphics_bank_select_w },
  141.     { 0xb006, 0xb006, thepit_flipx_w, &flip_screen_x },
  142.     { 0xb007, 0xb007, thepit_flipy_w, &flip_screen_y },
  143.     { 0xb800, 0xb800, soundlatch_w },
  144.     { -1 }  /* end of table */
  145. };
  146.  
  147.  
  148. static struct MemoryReadAddress sound_readmem[] =
  149. {
  150.     { 0x0000, 0x0fff, MRA_ROM },
  151.     { 0x3800, 0x3bff, MRA_RAM },
  152.     { -1 }  /* end of table */
  153. };
  154.  
  155. static struct MemoryWriteAddress sound_writemem[] =
  156. {
  157.     { 0x3800, 0x3bff, MWA_RAM },
  158.     { -1 }  /* end of table */
  159. };
  160.  
  161. static struct IOReadPort sound_readport[] =
  162. {
  163.     { 0x8f, 0x8f, AY8910_read_port_0_r },
  164.     { -1 }  /* end of table */
  165. };
  166.  
  167. static struct IOWritePort sound_writeport[] =
  168. {
  169.     { 0x00, 0x00, soundlatch_clear_w },
  170.     { 0x8c, 0x8d, thepit_AY8910_1_w },
  171.     { 0x8e, 0x8f, thepit_AY8910_0_w },
  172.     { -1 }  /* end of table */
  173. };
  174.  
  175.  
  176. INPUT_PORTS_START( thepit )
  177.     PORT_START      /* IN0 */
  178.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  179.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  180.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  181.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  182.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  183.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  184.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  185.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  186.  
  187.     PORT_START      /* IN1 */
  188.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  189.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  190.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  191.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  192.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  193.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  194.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  195.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  196.  
  197.     PORT_START      /* DSW0 */
  198.     PORT_DIPNAME( 0x03, 0x00, "Coinage P1/P2" )
  199.     PORT_DIPSETTING(    0x00, "1Cr/2Cr" )
  200.     PORT_DIPSETTING(    0x01, "2Cr/3Cr" )
  201.     PORT_DIPSETTING(    0x02, "2Cr/4Cr" )
  202.     PORT_DIPSETTING(    0x03, DEF_STR( Free_Play ) )
  203.     PORT_DIPNAME( 0x04, 0x00, "Game Speed" )
  204.     PORT_DIPSETTING(    0x04, "Slow" )
  205.     PORT_DIPSETTING(    0x00, "Fast" )
  206.     PORT_DIPNAME( 0x08, 0x00, "Time Limit" )
  207.     PORT_DIPSETTING(    0x00, "Long" )
  208.     PORT_DIPSETTING(    0x08, "Short" )
  209.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Flip_Screen ) )
  210.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  211.     PORT_DIPSETTING(    0x10, DEF_STR( On ) )
  212.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
  213.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  214.     PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
  215.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Lives ) )
  216.     PORT_DIPSETTING(    0x00, "3" )
  217.     PORT_DIPSETTING(    0x40, "4" )
  218.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )
  219.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  220.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  221.  
  222.     /* Since the real inputs are multiplexed, we used this fake port
  223.        to read the 2nd player controls when the screen is flipped */
  224.     PORT_START      /* IN2 */
  225.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  226.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  227.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  228.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  229.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  230.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  231.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  232.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  233. INPUT_PORTS_END
  234.  
  235.  
  236. INPUT_PORTS_START( roundup )
  237.     PORT_START      /* IN1 */
  238.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  239.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  240.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  241.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  242.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  243.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  244.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  245.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  246.  
  247.     PORT_START      /* IN2 */
  248.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  249.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  250.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  251.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  252.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  253.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  254.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  255.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  256.  
  257.     PORT_START      /* DSW0 */
  258.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )
  259.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  260.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
  261.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
  262.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ) )
  263.     PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Lives ) )
  264.     PORT_DIPSETTING(    0x00, "2" )
  265.     PORT_DIPSETTING(    0x04, "3" )
  266.     PORT_DIPSETTING(    0x08, "4" )
  267.     PORT_DIPSETTING(    0x0c, "5" )
  268.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
  269.     PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
  270.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  271.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
  272.     PORT_DIPSETTING(    0x00, "10000" )
  273.     PORT_DIPSETTING(    0x20, "30000" )
  274.     PORT_DIPNAME( 0x40, 0x40, "Gly Boys Wake Up" )
  275.     PORT_DIPSETTING(    0x40, "Slow" )
  276.     PORT_DIPSETTING(    0x00, "Fast" )
  277.     PORT_SERVICE( 0x80, IP_ACTIVE_HIGH )
  278.  
  279.     /* Since the real inputs are multiplexed, we used this fake port
  280.        to read the 2nd player controls when the screen is flipped */
  281.     PORT_START      /* IN2 */
  282.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  283.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  284.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  285.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  286.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
  287.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  288.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  289.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  290. INPUT_PORTS_END
  291.  
  292.  
  293. INPUT_PORTS_START( fitter )
  294.     PORT_START      /* IN1 */
  295.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  296.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  297.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  298.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  299.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  300.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  301.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  302.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  303.  
  304.     PORT_START      /* IN2 */
  305.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  306.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START2 )
  307.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  308.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  309.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  310.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  311.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  312.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  313.  
  314.     PORT_START      /* DSW0 */
  315.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )
  316.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  317.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
  318.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
  319.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ) )
  320.     PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Lives ) )
  321.     PORT_DIPSETTING(    0x00, "2" )
  322.     PORT_DIPSETTING(    0x04, "3" )
  323.     PORT_DIPSETTING(    0x08, "4" )
  324.     PORT_DIPSETTING(    0x0c, "5" )
  325.     PORT_DIPNAME( 0x10, 0x10, DEF_STR( Cabinet ) )
  326.     PORT_DIPSETTING(    0x10, DEF_STR( Upright ) )
  327.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  328.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
  329.     PORT_DIPSETTING(    0x00, "10000" )
  330.     PORT_DIPSETTING(    0x20, "30000" )
  331.     PORT_DIPNAME( 0x40, 0x40, "Gly Boys Wake Up" )
  332.     PORT_DIPSETTING(    0x40, "Slow" )
  333.     PORT_DIPSETTING(    0x00, "Fast" )
  334.     PORT_BITX(    0x80, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  335.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  336.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  337.  
  338.     /* Since the real inputs are multiplexed, we used this fake port
  339.        to read the 2nd player controls when the screen is flipped */
  340.     PORT_START      /* IN2 */
  341.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  342.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  343.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  344.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  345.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
  346.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  347.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  348.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  349. INPUT_PORTS_END
  350.  
  351.  
  352. INPUT_PORTS_START( intrepid )
  353.     PORT_START      /* IN1 */
  354.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  355.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  356.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  357.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  358.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  359.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  360.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  361.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* Starts a timer, which, */
  362.                                                     /* after it runs down, doesn't */
  363.     PORT_START      /* IN2 */                     /* seem to do anything. See $0105 */
  364.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  365.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  366.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  367.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  368.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  369.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  370.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  371.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  372.  
  373.     PORT_START      /* DSW0 */
  374.     PORT_BITX(    0x01, 0x01, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  375.     PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
  376.     PORT_DIPSETTING(    0x00, DEF_STR( On ) )
  377.     PORT_DIPNAME( 0x02, 0x00, DEF_STR( Demo_Sounds ) )
  378.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  379.     PORT_DIPSETTING(    0x02, DEF_STR( On ) )
  380.     PORT_DIPNAME( 0x04, 0x04, DEF_STR( Cabinet ) )
  381.     PORT_DIPSETTING(    0x04, DEF_STR( Upright ) )
  382.     PORT_DIPSETTING(    0x00, DEF_STR( Cocktail ) )
  383.     PORT_DIPNAME( 0x08, 0x08, DEF_STR( Difficulty ) )
  384.     PORT_DIPSETTING(    0x08, "Easy" )
  385.     PORT_DIPSETTING(    0x00, "Hard" )
  386.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Bonus_Life ) )
  387.     PORT_DIPSETTING(    0x00, "10000" )
  388.     PORT_DIPSETTING(    0x10, "30000" )
  389.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Lives ) )
  390.     PORT_DIPSETTING(    0x20, "3" )
  391.     PORT_DIPSETTING(    0x00, "5" )
  392.     PORT_DIPNAME( 0xc0, 0x40, DEF_STR( Coinage ) )
  393.     PORT_DIPSETTING(    0x80, DEF_STR( 2C_1C ) )
  394.     PORT_DIPSETTING(    0x40, DEF_STR( 1C_1C ) )
  395.     PORT_DIPSETTING(    0xc0, DEF_STR( 1C_2C ) )
  396.     PORT_DIPSETTING(    0x00, DEF_STR( Free_Play ) )
  397.  
  398.     /* Since the real inputs are multiplexed, we used this fake port
  399.        to read the 2nd player controls when the screen is flipped */
  400.     PORT_START      /* IN2 */
  401.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  402.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  403.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  404.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  405.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  406.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  407.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  408.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  409. INPUT_PORTS_END
  410.  
  411.  
  412. INPUT_PORTS_START( portman )
  413.     PORT_START      /* IN1 */
  414.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  415.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  416.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  417.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  418.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  419.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* unused? */
  420.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* unused? */
  421.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) /* unused? */
  422.  
  423.     PORT_START      /* IN2 */
  424.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  425.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
  426.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  427.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  428.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  429.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  430.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  431.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  432.  
  433.     PORT_START      /* DSW0 */
  434.     PORT_DIPNAME( 0x03, 0x01, DEF_STR( Coinage ) )
  435.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  436.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
  437.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
  438.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ) )
  439.     PORT_DIPNAME( 0x0c, 0x04, DEF_STR( Lives ) )
  440.     PORT_DIPSETTING(    0x00, "2" )
  441.     PORT_DIPSETTING(    0x04, "3" )
  442.     PORT_DIPSETTING(    0x08, "4" )
  443.     PORT_DIPSETTING(    0x0c, "5" )
  444.     PORT_DIPNAME( 0x10, 0x00, DEF_STR( Bonus_Life ) )
  445.     PORT_DIPSETTING(    0x00, "100000" )
  446.     PORT_DIPSETTING(    0x10, "300000" )
  447.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Cabinet ) )
  448.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  449.     PORT_DIPSETTING(    0x20, DEF_STR( Cocktail ) )
  450.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) )    /* not used? */
  451.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  452.     PORT_DIPSETTING(    0x40, DEF_STR( On ) )
  453.     PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) )    /* not used? */
  454.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  455.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  456.  
  457.     /* Since the real inputs are multiplexed, we used this fake port
  458.        to read the 2nd player controls when the screen is flipped */
  459.     PORT_START      /* IN2 */
  460.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  461.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL )
  462.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  463.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  464.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL)
  465.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  466.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  467.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  468. INPUT_PORTS_END
  469.  
  470.  
  471. INPUT_PORTS_START( suprmous )
  472.     PORT_START      /* IN1 */
  473.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY )
  474.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY )
  475.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY )
  476.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY )
  477.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 )
  478.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  479.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  480.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  481.  
  482.     PORT_START      /* IN2 */
  483.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
  484.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  485.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 )
  486.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_START2 )
  487.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  488.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  489.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  490.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  491.  
  492.     PORT_START      /* DSW0 */
  493.     PORT_DIPNAME( 0x07, 0x01, DEF_STR( Coinage ) )
  494.     PORT_DIPSETTING(    0x00, DEF_STR( 2C_1C ) )
  495.     PORT_DIPSETTING(    0x01, DEF_STR( 1C_1C ) )
  496.     PORT_DIPSETTING(    0x02, DEF_STR( 1C_2C ) )
  497.     PORT_DIPSETTING(    0x03, DEF_STR( 1C_3C ) )
  498.     PORT_DIPSETTING(    0x04, DEF_STR( 1C_4C ) )
  499.     PORT_DIPSETTING(    0x05, DEF_STR( 1C_5C ) )
  500.     PORT_DIPSETTING(    0x06, DEF_STR( 1C_6C ) )
  501.     PORT_DIPSETTING(    0x07, DEF_STR( 1C_7C ) )
  502.     PORT_DIPNAME( 0x18, 0x00, DEF_STR( Lives ) )  /* The game reads these together */
  503.     PORT_DIPSETTING(    0x00, "3" )
  504.     PORT_DIPSETTING(    0x08, "5" )
  505.   //PORT_DIPSETTING(    0x10, "5" )
  506.   //PORT_DIPSETTING(    0x18, "5" )
  507.     PORT_DIPNAME( 0x20, 0x00, DEF_STR( Bonus_Life ) )
  508.     PORT_DIPSETTING(    0x10, "5000" )
  509.     PORT_DIPSETTING(    0x00, "10000" )
  510.     PORT_DIPNAME( 0x40, 0x00, DEF_STR( Cabinet ) )
  511.     PORT_DIPSETTING(    0x00, DEF_STR( Upright ) )
  512.     PORT_DIPSETTING(    0x40, DEF_STR( Cocktail ) )
  513.     PORT_BITX(    0x80, 0x00, IPT_DIPSWITCH_NAME | IPF_CHEAT, "Invulnerability", IP_KEY_NONE, IP_JOY_NONE )
  514.     PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
  515.     PORT_DIPSETTING(    0x80, DEF_STR( On ) )
  516.  
  517.     /* Since the real inputs are multiplexed, we used this fake port
  518.        to read the 2nd player controls when the screen is flipped */
  519.     PORT_START      /* IN2 */
  520.     PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT | IPF_8WAY | IPF_COCKTAIL )
  521.     PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT | IPF_8WAY | IPF_COCKTAIL)
  522.     PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN | IPF_8WAY | IPF_COCKTAIL )
  523.     PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP | IPF_8WAY | IPF_COCKTAIL )
  524.     PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 | IPF_COCKTAIL )
  525.     PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  526.     PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  527.     PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN )
  528. INPUT_PORTS_END
  529.  
  530.  
  531. static struct GfxLayout charlayout =
  532. {
  533.     8,8,    /* 8*8 characters */
  534.     256,    /* 256 characters */
  535.     2,      /* 2 bits per pixel */
  536.     { 0x1000*8, 0 }, /* the two bitplanes are separated */
  537.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  538.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  539.     8*8     /* every char takes 8 consecutive bytes */
  540. };
  541.  
  542.  
  543. static struct GfxLayout spritelayout =
  544. {
  545.     16,16,  /* 16*16 sprites */
  546.     64,     /* 64 sprites */
  547.     2,      /* 2 bits per pixel */
  548.     { 0x1000*8, 0 },    /* the two bitplanes are separated */
  549.     { 0, 1, 2, 3, 4, 5, 6, 7,
  550.       8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
  551.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  552.       16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
  553.     32*8    /* every sprite takes 32 consecutive bytes */
  554. };
  555.  
  556.  
  557. static struct GfxLayout suprmous_charlayout =
  558. {
  559.     8,8,    /* 8*8 characters */
  560.     256,    /* 256 characters */
  561.     3,        /* 3 bits per pixel */
  562.     { 0x2000*8, 0x1000*8, 0 },    /* the three bitplanes for 4 pixels are separated */
  563.     { 0, 1, 2, 3, 4, 5, 6, 7 },
  564.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
  565.     8*8        /* every char takes 8 consecutive bytes */
  566. };
  567.  
  568.  
  569. static struct GfxLayout suprmous_spritelayout =
  570. {
  571.     16,16,    /* 16*16 sprites */
  572.     64,        /* 64 sprites */
  573.     3,        /* 3 bits per pixel */
  574.     { 0x2000*8, 0x1000*8, 0 },    /* the bitplanes are separated */
  575.     { 0, 1, 2, 3, 4, 5, 6, 7,
  576.       8*8+0, 8*8+1, 8*8+2, 8*8+3, 8*8+4, 8*8+5, 8*8+6, 8*8+7 },
  577.     { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8,
  578.       16*8, 17*8, 18*8, 19*8, 20*8, 21*8, 22*8, 23*8 },
  579.     32*8    /* every sprite takes 32 consecutive bytes */
  580. };
  581.  
  582.  
  583. static struct GfxDecodeInfo thepit_gfxdecodeinfo[] =
  584. {
  585.     { REGION_GFX1, 0, &charlayout,     0, 8 },
  586.     { REGION_GFX1, 0, &spritelayout,   0, 8 },
  587.     { -1 } /* end of array */
  588. };
  589.  
  590. static struct GfxDecodeInfo intrepid_gfxdecodeinfo[] =
  591. {
  592.     { REGION_GFX1, 0x0000, &charlayout,     0, 8 },
  593.     { REGION_GFX1, 0x0000, &spritelayout,   0, 8 },
  594.     { REGION_GFX1, 0x0800, &charlayout,     0, 8 },
  595.     { REGION_GFX1, 0x0800, &spritelayout,   0, 8 },
  596.     { -1 } /* end of array */
  597. };
  598.  
  599. static struct GfxDecodeInfo suprmous_gfxdecodeinfo[] =
  600. {
  601.     { REGION_GFX1, 0x0000, &suprmous_charlayout,   0, 8 },
  602.     { REGION_GFX1, 0x0800, &suprmous_spritelayout, 0, 8 },
  603.     { -1 } /* end of array */
  604. };
  605.  
  606.  
  607. static struct AY8910interface ay8910_interface =
  608. {
  609.     2,      /* 1 or 2 chips */
  610.     18432000/12,     /* 1.536Mhz */
  611.     { 25, 25 },
  612.     { soundlatch_r, 0 },
  613.     { 0, 0 },
  614.     { 0, 0 },
  615.     { 0, 0 }
  616. };
  617.  
  618.  
  619. #define MACHINE_DRIVER(GAMENAME, COLORS)                    \
  620. static struct MachineDriver machine_driver_##GAMENAME =        \
  621. {                                                              \
  622.     /* basic machine hardware */                            \
  623.     {                                                        \
  624.         {                                                    \
  625.             CPU_Z80,                                        \
  626.             18432000/6,     /* 3.072 Mhz */                    \
  627.             GAMENAME##_readmem,GAMENAME##_writemem,0,0,        \
  628.             nmi_interrupt,1                                    \
  629.         },                                                    \
  630.         {                                                    \
  631.             CPU_Z80 | CPU_AUDIO_CPU,                        \
  632.             10000000/4,     /* 2.5 Mhz */                    \
  633.             sound_readmem,sound_writemem,                    \
  634.             sound_readport,sound_writeport,                    \
  635.             interrupt,1                                        \
  636.         }                                                    \
  637.     },                                                        \
  638.     60, DEFAULT_60HZ_VBLANK_DURATION,       /* frames per second, vblank duration */ \
  639.     1,    /* 1 CPU slice per frame - interleaving is forced when a sound command is written */ \
  640.     0,                                                        \
  641.                                                             \
  642.     /* video hardware */                                    \
  643.     32*8, 32*8, { 0*8, 32*8-1, 2*8, 30*8-1 },                \
  644.     GAMENAME##_gfxdecodeinfo,                                \
  645.     COLORS+8, COLORS,                                        \
  646.     thepit_vh_convert_color_prom,                            \
  647.                                                             \
  648.     VIDEO_TYPE_RASTER,                                        \
  649.     0,                                                        \
  650.     generic_vh_start,                                        \
  651.     generic_vh_stop,                                        \
  652.     thepit_vh_screenrefresh,                                \
  653.                                                             \
  654.     /* sound hardware */                                    \
  655.     0,0,0,0,                                                \
  656.     {                                                        \
  657.         {                                                    \
  658.             SOUND_AY8910,                                    \
  659.             &ay8910_interface                                \
  660.         }                                                    \
  661.     }                                                        \
  662. };
  663.  
  664.  
  665. #define suprmous_readmem   intrepid_readmem
  666. #define suprmous_writemem  intrepid_writemem
  667.  
  668. MACHINE_DRIVER(thepit,   4*8)
  669. MACHINE_DRIVER(intrepid, 4*8)
  670. MACHINE_DRIVER(suprmous, 8*8)
  671.  
  672. /***************************************************************************
  673.  
  674.   Game driver(s)
  675.  
  676. ***************************************************************************/
  677.  
  678. ROM_START( thepit )
  679.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for main CPU */
  680.     ROM_LOAD( "p38b",         0x0000, 0x1000, 0x7315e1bc )
  681.     ROM_LOAD( "p39b",         0x1000, 0x1000, 0xc9cc30fe )
  682.     ROM_LOAD( "p40b",         0x2000, 0x1000, 0x986738b5 )
  683.     ROM_LOAD( "p41b",         0x3000, 0x1000, 0x31ceb0a1 )
  684.     ROM_LOAD( "p33b",         0x4000, 0x1000, 0x614ec454 )
  685.  
  686.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for audio CPU */
  687.     ROM_LOAD( "p30",          0x0000, 0x0800, 0x1b79dfb6 )
  688.  
  689.     ROM_REGION( 0x1800, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  690.     ROM_LOAD( "p9",           0x0000, 0x0800, 0x69502afc )
  691.     ROM_LOAD( "p8",           0x1000, 0x0800, 0x2ddd5045 )
  692.  
  693.     ROM_REGION( 0x0020, REGION_PROMS )
  694.     ROM_LOAD( "pitclr.ic4",   0x0000, 0x0020, 0xa758b567 )
  695. ROM_END
  696.  
  697. ROM_START( roundup )
  698.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for main CPU */
  699.     ROM_LOAD( "roundup.u38",  0x0000, 0x1000, 0xd62c3b7a )
  700.     ROM_LOAD( "roundup.u39",  0x1000, 0x1000, 0x37bf554b )
  701.     ROM_LOAD( "roundup.u40",  0x2000, 0x1000, 0x5109d0c5 )
  702.     ROM_LOAD( "roundup.u41",  0x3000, 0x1000, 0x1c5ed660 )
  703.     ROM_LOAD( "roundup.u33",  0x4000, 0x1000, 0x2fa711f3 )
  704.  
  705.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for audio CPU */
  706.     ROM_LOAD( "roundup.u30",  0x0000, 0x0800, 0x1b18faee )
  707.     ROM_LOAD( "roundup.u31",  0x0800, 0x0800, 0x76cf4394 )
  708.  
  709.     ROM_REGION( 0x1800, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  710.     ROM_LOAD( "roundup.u9",   0x0000, 0x0800, 0x394676a2 )
  711.     ROM_LOAD( "roundup.u10",  0x1000, 0x0800, 0xa38d708d )
  712.  
  713.     ROM_REGION( 0x0020, REGION_PROMS )
  714.     ROM_LOAD( "roundup.clr",  0x0000, 0x0020, 0xa758b567 )
  715. ROM_END
  716.  
  717. ROM_START( fitter )
  718.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for main CPU */
  719.     ROM_LOAD( "ic38.bin",     0x0000, 0x1000, 0x6bf6cca4 )
  720.     ROM_LOAD( "roundup.u39",  0x1000, 0x1000, 0x37bf554b )
  721.     ROM_LOAD( "ic40.bin",     0x2000, 0x1000, 0x572e2157 )
  722.     ROM_LOAD( "roundup.u41",  0x3000, 0x1000, 0x1c5ed660 )
  723.     ROM_LOAD( "ic33.bin",     0x4000, 0x1000, 0xab47c6c2 )
  724.  
  725.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for audio CPU */
  726.     ROM_LOAD( "ic30.bin",     0x0000, 0x0800, 0x4055b5ca )
  727.     ROM_LOAD( "ic31.bin",     0x0800, 0x0800, 0xc9d8c1cc )
  728.  
  729.     ROM_REGION( 0x1800, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  730.     ROM_LOAD( "ic9.bin",      0x0000, 0x0800, 0xa6799a37 )
  731.     ROM_LOAD( "ic8.bin",      0x1000, 0x0800, 0xa8256dfe )
  732.  
  733.     ROM_REGION( 0x0020, REGION_PROMS )
  734.     ROM_LOAD( "roundup.clr",  0x0000, 0x0020, 0xa758b567 )
  735. ROM_END
  736.  
  737. ROM_START( intrepid )
  738.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for main CPU */
  739.     ROM_LOAD( "ic19.1",       0x0000, 0x1000, 0x7d927b23 )
  740.     ROM_LOAD( "ic18.2",       0x1000, 0x1000, 0xdcc22542 )
  741.     ROM_LOAD( "ic17.3",       0x2000, 0x1000, 0xfd11081e )
  742.     ROM_LOAD( "ic16.4",       0x3000, 0x1000, 0x74a51841 )
  743.     ROM_LOAD( "ic15.5",       0x4000, 0x1000, 0x4fef643d )
  744.  
  745.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for audio CPU */
  746.     ROM_LOAD( "ic22.7",       0x0000, 0x0800, 0x1a7cc392 )
  747.     ROM_LOAD( "ic23.6",       0x0800, 0x0800, 0x91ca7097 )
  748.  
  749.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  750.     ROM_LOAD( "ic9.9",        0x0000, 0x1000, 0x8c70d18d )
  751.     ROM_LOAD( "ic8.8",        0x1000, 0x1000, 0x04d067d3 )
  752.  
  753.     ROM_REGION( 0x0020, REGION_PROMS )
  754.     ROM_LOAD( "ic3.prm",      0x0000, 0x0020, 0x927ff40a )
  755. ROM_END
  756.  
  757. ROM_START( intrepi2 )
  758.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for main CPU */
  759.     ROM_LOAD( "intrepid.001", 0x0000, 0x1000, 0x9505df1e )
  760.     ROM_LOAD( "intrepid.002", 0x1000, 0x1000, 0x27e9f53f )
  761.     ROM_LOAD( "intrepid.003", 0x2000, 0x1000, 0xda082ed7 )
  762.     ROM_LOAD( "intrepid.004", 0x3000, 0x1000, 0x60acecd9 )
  763.     ROM_LOAD( "intrepid.005", 0x4000, 0x1000, 0x7c868725 )
  764.  
  765.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for audio CPU */
  766.     ROM_LOAD( "intrepid.007", 0x0000, 0x0800, 0xf85ead07 )
  767.     ROM_LOAD( "intrepid.006", 0x0800, 0x0800, 0x9eb6c61b )
  768.  
  769.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  770.     ROM_LOAD( "ic9.9",        0x0000, 0x1000, 0x8c70d18d )
  771.     ROM_LOAD( "ic8.8",        0x1000, 0x1000, 0x04d067d3 )
  772.  
  773.     ROM_REGION( 0x0020, REGION_PROMS )
  774.     ROM_LOAD( "ic3.prm",      0x0000, 0x0020, 0x927ff40a )
  775. ROM_END
  776.  
  777. ROM_START( portman )
  778.     ROM_REGION( 0x10000, REGION_CPU1 )     /* 64k for main CPU */
  779.     ROM_LOAD( "pe1",          0x0000, 0x1000, 0xa5cf6083 )
  780.     ROM_LOAD( "pe2",          0x1000, 0x1000, 0x0b53d48a )
  781.     ROM_LOAD( "pe3",          0x2000, 0x1000, 0x1c923057 )
  782.     ROM_LOAD( "pe4",          0x3000, 0x1000, 0x555c71ef )
  783.     ROM_LOAD( "pe5",          0x4000, 0x1000, 0xf749e2d4 )
  784.  
  785.     ROM_REGION( 0x10000, REGION_CPU2 )     /* 64k for audio CPU */
  786.     ROM_LOAD( "pe7",          0x0000, 0x0800, 0xd2094e4a )
  787.     ROM_LOAD( "pe6",          0x0800, 0x0800, 0x1cf447f4 )
  788.  
  789.     ROM_REGION( 0x2000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  790.     ROM_LOAD( "pe8",          0x0000, 0x1000, 0x4d8c2974 )
  791.     ROM_LOAD( "pe9",          0x1000, 0x1000, 0x4e4ea162 )
  792.  
  793.     ROM_REGION( 0x0020, REGION_PROMS )
  794.     ROM_LOAD( "ic3",          0x0000, 0x0020, 0x6440dc61 )
  795. ROM_END
  796.  
  797. ROM_START( suprmous )
  798.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for main CPU */
  799.     ROM_LOAD( "sm.1",         0x0000, 0x1000, 0x9db2b786 )
  800.     ROM_LOAD( "sm.2",         0x1000, 0x1000, 0x0a3d91d3 )
  801.     ROM_LOAD( "sm.3",         0x2000, 0x1000, 0x32af6285 )
  802.     ROM_LOAD( "sm.4",         0x3000, 0x1000, 0x46091524 )
  803.     ROM_LOAD( "sm.5",         0x4000, 0x1000, 0xf15fd5d2 )
  804.  
  805.     ROM_REGION( 0x10000, REGION_CPU2 )       /* 64k for audio CPU */
  806.     ROM_LOAD( "sm.6",         0x0000, 0x1000, 0xfba71785 )
  807.  
  808.     ROM_REGION( 0x3000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  809.     ROM_LOAD( "sm.7",         0x0000, 0x1000, 0x1d476696 )
  810.     ROM_LOAD( "sm.8",         0x1000, 0x1000, 0x2f81ab5f )
  811.     ROM_LOAD( "sm.9",         0x2000, 0x1000, 0x8463af89 )
  812.  
  813.     ROM_REGION( 0x0040, REGION_PROMS )
  814.     ROM_LOAD( "smouse2.clr",  0x0000, 0x0020, 0x8c295553 )
  815.     ROM_LOAD( "smouse1.clr",  0x0020, 0x0020, 0xd815504b )
  816. ROM_END
  817.  
  818. ROM_START( suprmou2 )
  819.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for main CPU */
  820.     ROM_LOAD( "suprmous.x1",  0x0000, 0x1000, 0xad72b467 )
  821.     ROM_LOAD( "suprmous.x2",  0x1000, 0x1000, 0x53f5be5e )
  822.     ROM_LOAD( "suprmous.x3",  0x2000, 0x1000, 0xb5b8d34d )
  823.     ROM_LOAD( "suprmous.x4",  0x3000, 0x1000, 0x603333df )
  824.     ROM_LOAD( "suprmous.x5",  0x4000, 0x1000, 0x2ef9cbf1 )
  825.  
  826.     ROM_REGION( 0x10000, REGION_CPU2 )       /* 64k for audio CPU */
  827.     ROM_LOAD( "sm.6",         0x0000, 0x1000, 0xfba71785 )
  828.  
  829.     ROM_REGION( 0x3000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  830.     ROM_LOAD( "suprmous.x7",  0x0000, 0x1000, 0xe9295071 )
  831.     ROM_LOAD( "suprmous.x8",  0x1000, 0x1000, 0xdbef9db8 )
  832.     ROM_LOAD( "suprmous.x9",  0x2000, 0x1000, 0x700d996e )
  833.  
  834.     ROM_REGION( 0x0040, REGION_PROMS )
  835.     ROM_LOAD( "smouse2.clr",  0x0000, 0x0020, 0x8c295553 )
  836.     ROM_LOAD( "smouse1.clr",  0x0020, 0x0020, 0xd815504b )
  837. ROM_END
  838.  
  839. ROM_START( machomou )
  840.     ROM_REGION( 0x10000, REGION_CPU1 )        /* 64k for main CPU */
  841.     ROM_LOAD( "mm1.2g",       0x0000, 0x1000, 0x91f116be )
  842.     ROM_LOAD( "mm2.2h",       0x1000, 0x1000, 0x3aa88c9b )
  843.     ROM_LOAD( "mm3.2i",       0x2000, 0x1000, 0x3b66b519 )
  844.     ROM_LOAD( "mm4.2j",       0x3000, 0x1000, 0xd4f99896 )
  845.     ROM_LOAD( "mm5.3f",       0x4000, 0x1000, 0x5bfc3874 )
  846.  
  847.     ROM_REGION( 0x10000, REGION_CPU2 )       /* 64k for audio CPU */
  848.     ROM_LOAD( "mm6.e6",       0x0000, 0x1000, 0x20816913 )
  849.  
  850.     ROM_REGION( 0x3000, REGION_GFX1 | REGIONFLAG_DISPOSE ) /* chars and sprites */
  851.     ROM_LOAD( "mm7.3d",       0x0000, 0x1000, 0xa6f60ed2 )
  852.     ROM_LOAD( "mm8.3c",       0x1000, 0x1000, 0x062e77cb )
  853.     ROM_LOAD( "mm9.3a",       0x2000, 0x1000, 0xa2f0cfb3 )
  854.  
  855.     ROM_REGION( 0x0040, REGION_PROMS )
  856.     ROM_LOAD( "mmouse2.clr",  0x0000, 0x0020, 0x00000000 )
  857.     ROM_LOAD( "mmouse1.clr",  0x0020, 0x0020, 0x00000000 )
  858. ROM_END
  859.  
  860.  
  861.  
  862. GAME( 1981, roundup,  0,        thepit,   roundup,  0, ROT90, "Amenip/Centuri", "Round-Up" )
  863. GAME( 1981, fitter,   roundup,  thepit,   fitter,   0, ROT90, "Taito", "Fitter" )
  864. GAME( 1982, thepit,   0,        thepit,   thepit,   0, ROT90, "Centuri", "The Pit" )
  865. GAME( 1982, portman,  0,        intrepid, portman,  0, ROT90, "Nova Games Ltd.", "Port Man" )
  866. GAMEX(1982, suprmous, 0,        suprmous, suprmous, 0, ROT90, "Taito", "Super Mouse", GAME_WRONG_COLORS )
  867. GAMEX(1982, suprmou2, suprmous, suprmous, suprmous, 0, ROT90, "Chu Co. Ltd", "Funny Mouse (bootleg?)", GAME_WRONG_COLORS )
  868. GAMEX(1982, machomou, 0,        suprmous, suprmous, 0, ROT90, "Techstar", "Macho Mouse", GAME_WRONG_COLORS )
  869. GAME( 1983, intrepid, 0,        intrepid, intrepid, 0, ROT90, "Nova Games Ltd.", "Intrepid (set 1)" )
  870. GAME( 1983, intrepi2, intrepid, intrepid, intrepid, 0, ROT90, "Nova Games Ltd.", "Intrepid (set 2)" )
  871.